// 1. 导入依赖
const express = require('express'); // Express框架（搭建服务器）
const mongoose = require('mongoose'); // 操作MongoDB
const cors = require('cors'); // 解决跨域问题
const dotenv = require('dotenv'); // 加载.env环境变量
const authRoutes = require('./routes/authRoutes'); // 导入注册路由
const detectionRoutes = require('./routes/detectionRoutes'); // 导入检测路由
const path = require('path'); // 导入Node.js内置的path模块

// 2. 加载.env文件中的环境变量（必须在使用process.env前执行）
dotenv.config();

// 3. 创建Express服务器实例
const app = express();

// 4. 设置端口号（优先用.env中的PORT，没有则默认5000）
const PORT = process.env.PORT || 5000;

// 5. 配置中间件（对所有请求生效，必须在路由前配置）
app.use(cors()); // 允许跨域请求（解决前端3000/5173端口访问后端5000端口的限制）
app.use(express.json()); // 解析JSON格式的请求体（让req.body能获取到前端数据）


// 6. 连接MongoDB数据库
// mongoose.connect(数据库地址) → 返回Promise
mongoose.connect(process.env.MONGO_URI)
  .then(() => {
    console.log('✅ MongoDB数据库连接成功'); // 成功回调
  })
  .catch(err => {
    console.error('❌ MongoDB连接失败：', err); // 失败回调
  });

// 7. 挂载路由（所有以/api/auth开头的请求，都交给authRoutes处理）
// 例如：/api/auth/register → 对应authRoutes中的/register接口
app.use('/api/auth', authRoutes);

// 8. 启动服务器（监听指定端口）
app.listen(PORT, () => {
  console.log(`🚀 后端服务器已启动，地址：http://localhost:${PORT}`);
});

// 9. 挂载检测路由（所有以/api/detection开头的请求，都交给detectionRoutes处理）
app.use('/api/detection', detectionRoutes);

// 允许前端访问uploads文件夹下的静态文件
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));